﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Espam.Idiomas.Decimo.Tesis.Negocio;
using Microsoft.Reporting.WebForms;
using System.IO;
using System.Text;
using System.Data;


namespace Espam.Idiomas.Decimo.Tesis.Web
{
    public partial class UI_Scores : System.Web.UI.Page
    {
        string validaSession = "";
        protected void Page_Load(object sender, EventArgs e)
        {
              if (!Page.IsPostBack)
            {
                Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
                Response.Cache.SetAllowResponseInBrowserHistory(false);
                Response.Cache.SetNoStore();

                if (Session["userEspamIdiomasVarSession001"] == null || Session["rolEspamIdiomasVarSession003"] == null)
                {
                    validaSession = "NoHaIniciadoSession";
                    Response.Redirect("UI_Login.aspx?validaSession=" + validaSession);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Docente")
                {
                    Response.Redirect("UI_DashboardTeacher.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Administradores")
                {
                   CargarDdlCiclo();
                   
                    ddlCiclo.AutoPostBack = true;
                    ddlNivel.AutoPostBack = true;
                    Niveles();
                    modulos();
                   
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Alumno")
                {
                    Response.Redirect("UI_DashboardStudents.aspx");
                }
            }
        }
        private void Niveles()
        {
            ListadoNiveles oLista = new ListadoNiveles();
            List<Nivel> lista = new List<Nivel>();
            oLista.ciclo = 0;
            lista = oLista.getNiveles();
            lista.Insert(0, new Nivel() { nivel = 0, equivalente = "<seleccione>" });
            ddlNivel.DataSource = lista;
            ddlNivel.DataTextField = "equivalente";
            ddlNivel.DataValueField = "nivel";
            ddlNivel.DataBind();
            
        }
        private void modulos()
        {
            ListadoNiveles oLista = new ListadoNiveles();
            List<Nivel> lista = new List<Nivel>();
            oLista.ciclo = 0;
            lista = oLista.getNiveles();
            lista.Insert(0, new Nivel() { nivel = 0, equivalente = "<seleccione>" });
           

        }
              
        private void CargarDdlCiclo()
        {
            Ciclos oCiclo = new Ciclos();
            List<Ciclos> lista = new List<Ciclos>();
            lista = oCiclo.GetCiclos();
            lista.Insert(0,new Ciclos{idCiclo=0,ciclo=0});
            ddlCiclo.DataSource = lista;
            ddlCiclo.DataTextField = "ciclo";
            ddlCiclo.DataValueField = "idCiclo";
            ddlCiclo.DataBind();
        }

        protected void ddlCiclo_SelectedIndexChanged(object sender, EventArgs e)
        {
            
                ListadoNiveles oLista = new ListadoNiveles();
                List<Nivel> lista = new List<Nivel>();
                oLista.ciclo = int.Parse(ddlCiclo.SelectedItem.Text);
                lista = oLista.getNiveles();
                lista.Insert(0, new Nivel() { nivel = 0, equivalente = "<seleccione un nivel>" });
                ddlNivel.DataSource = lista;
                ddlNivel.DataTextField = "equivalente";
                ddlNivel.DataValueField = "nivel";
                ddlNivel.DataBind();
                btnGenerarReporte.Text = "Generar Reporte";
                generagv();
            
           

        }

        protected void ddlNivel_SelectedIndexChanged(object sender, EventArgs e)
        {
              if (ddlNivel.SelectedIndex == 0)
                {
                    btnGenerarReporte.Text = "Generar Reporte";
                }
                else
                {
                    fila2Matricula.Visible = true;

                    btnGenerarReporte.Text = "Generar Reporte";

                    Modulos oMo = new Modulos();
                    List<Modulos> lista = new List<Modulos>();
                    oMo.ciclo = int.Parse(ddlCiclo.SelectedItem.Text);
                    oMo.nivel=int.Parse(ddlNivel.SelectedValue);
                    lista = oMo.GetHorariosByRegisterExonerados();
                    lista.Insert(0, new Modulos() { idModulo = 0, horario = "<seleccione un módulo>" });
                    generagv();
                }
           
           
            
        }

        protected void btnGenerarReporte_Click(object sender, EventArgs e)
        {
            if (btnGenerarReporte.Text == "Exportar a excel")
            {
                if (ddlCiclo.SelectedIndex!=0 && ddlNivel.SelectedIndex!=0)
                {
                    CrearReporte();    
                }
                else
                {
                    ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeMal('DEBE SELECCIONAR UN CICLO Y UN NIVEL')", true);
                }
                
            }
            else
            {               
               generagv();
               
            }
        }
        public void generagv()
        {
             Usuarios oUsu = new Usuarios();
                    oUsu.ciclo = int.Parse(ddlCiclo.SelectedItem.Text);
                    oUsu.nivel = int.Parse(ddlNivel.SelectedValue);
                    gvScoresMatriculados.DataSource = oUsu.GetCalificacionesCondensado();
                    gvScoresMatriculados.DataBind();
                    btnGenerarReporte.Text = "Exportar a excel";
                    if (gvScoresMatriculados.Rows.Count > 0)
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "Dttable", String.Format("CargaDataTable('{0}',{1});", "Contenido_gvScoresMatriculados", gvScoresMatriculados.Rows[0].Cells.Count), true);
        
        }
        private void CrearReporte()
        {
            Usuarios oUsu = new Usuarios();

            // oUsu.idDocente = (int)Session["idDocenteEspamIdiomasVarSession009"];
            //oUsu.nivel = int.Parse(ddlNivel.SelectedValue);
            //oUsu.idHorario = int.Parse(ddlHorario.SelectedValue);
            //DataSet ds = new DataSet();

            //int idDocente = (int)Session["idDocenteEspamIdiomasVarSession009"];
            //EspamIdiomasDataSet.sp_getListaEstudiantesByDocenteDataTable dt = new EspamIdiomasDataSet.sp_getListaEstudiantesByDocenteDataTable();
            //EspamIdiomasDataSetTableAdapters.sp_getListaEstudiantesByDocenteTableAdapter daaaa = new EspamIdiomasDataSetTableAdapters.sp_getListaEstudiantesByDocenteTableAdapter();
            //daaaa.Fill(dt, idDocente, int.Parse(ddlNivel.SelectedValue), int.Parse(ectedValue));
            

            EspamIdiomasDataSet.sp_getCalificacionesByCicloAndNivelDataTable dt = new EspamIdiomasDataSet.sp_getCalificacionesByCicloAndNivelDataTable();
            EspamIdiomasDataSetTableAdapters.sp_getCalificacionesByCicloAndNivelTableAdapter da = new EspamIdiomasDataSetTableAdapters.sp_getCalificacionesByCicloAndNivelTableAdapter();
            da.Fill(dt,int.Parse(ddlCiclo.SelectedItem.Text),int.Parse(ddlNivel.SelectedValue));

            ReportViewer viewer = new ReportViewer();
            ReportDataSource RD = new ReportDataSource();
            RD.Value = dt;
            RD.Name = "ecusp_rep_Calificaciones";
            //viewer.LocalReport.ReportPath = Server.MapPath("Reports/Administradores/AlumnosLListado.rdlc");
            viewer.LocalReport.DataSources.Clear();
            viewer.LocalReport.DataSources.Add(RD);
            //viewer.LocalReport.ReportEmbeddedResource = "CondensadoCalificaciones.rdlc";
            viewer.LocalReport.ReportPath = Server.MapPath("Reports/Administradores/CondensadoCalificaciones.rdlc");
            viewer.LocalReport.Refresh();

            string mimeType;
            string encoding;
            string fileNameExtension;
            string[] streams;
            Warning[] warnings;
            byte[] pdfContent = viewer.LocalReport.Render("EXCEL", string.Empty, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);

            this.Response.Clear();
            this.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            this.Response.AddHeader("Content-disposition", "attachment; filename=CondensadoCalificaciones.xls");
            this.Response.BinaryWrite(pdfContent);
            this.Response.End();
        }

        protected void gvScoresMatriculados_Load(object sender, EventArgs e)
        {
            if (gvScoresMatriculados.Rows.Count > 0)
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Dttable", String.Format("CargaDataTable('{0}',{1});", "Contenido_gvScoresMatriculados", gvScoresMatriculados.Rows[0].Cells.Count), true);
        
        }

        protected void gvScoresMatriculados_PreRender(object sender, EventArgs e)
        {
            GridView gvCodigos = (sender) as GridView;
            if (gvCodigos.Rows.Count > 0)
            {
                //This replaces <td> with <th> and adds the scope attribute
                gvCodigos.UseAccessibleHeader = true;

                //This will add the <thead> and <tbody> elements
                gvCodigos.HeaderRow.TableSection = TableRowSection.TableHeader;

                //This adds the <tfoot> element. 
                //Remove if you don't have a footer row
                gvCodigos.FooterRow.TableSection = TableRowSection.TableFooter;
            }
        }

    }
}